<?php
/** 
 * Classe de modelo para compra
 * @author felipe 
 */
class App_Model_Compra extends Voitech_Model {
	
	protected $coCompra;
	protected $vlCompra;
	protected $nuNota;
	protected $obTipoCompra;
	protected $obFornecedor;
	protected $obUsuario;
	protected $arrItemCompra;
	protected $dtCompra;
        
        public function getDtCompra() {
            return $this->dtCompra;
        }

        public function setDtCompra($dtCompra) {
            $this->dtCompra = $dtCompra;
        }

        	
	/**
	 * @return the $coCompra
	 */
	public function getCoCompra() {
		return $this->coCompra;
	}

	/**
	 * @return the $vlCompra
	 */
	public function getVlCompra() {
		return $this->vlCompra;
	}

	/**
	 * @return the $nuNota
	 */
	public function getNuNota() {
		return $this->nuNota;
	}

	/**
	 * @return App_Model_TipoCompra $obTipoCompra
	 */
	public function getObTipoCompra() {
		return $this->obTipoCompra;
	}

	/**
	 * @return App_Model_Fornecedor $obFornecedor
	 */
	public function getObFornecedor() {
		return $this->obFornecedor;
	}

	/**
	 * @return App_Model_Usuario $obUsuario
	 */
	public function getObUsuario() {
		return $this->obUsuario;
	}

	/**
	 * @return the $arrItemCompra
	 */
	public function getArrItemCompra() {
		return $this->arrItemCompra;
	}

	/**
	 * @param $coCompra the $coCompra to set
	 */
	public function setCoCompra($coCompra) {
		$this->coCompra = (int) $coCompra;
                return $this;
	}

	/**
	 * @param $nuNota the $nuNota to set
	 */
	public function setNuNota($nuNota) {
		$this->nuNota = $nuNota;
                return $this;
	}

	/**
	 * @param App_Model_TipoCompra the $obTipoCompra to set
	 */
	public function setObTipoCompra(App_Model_TipoCompra $obTipoCompra) {
		$this->obTipoCompra = $obTipoCompra;
                return $this;
	}

	/**
	 * @param $obFornecedor the $obFornecedor to set
	 */
	public function setObFornecedor(App_Model_Fornecedor $obFornecedor) {
		$this->obFornecedor = $obFornecedor;
                return $this;
	}

	/**
	 * @param $obUsuario the $obUsuario to set
	 */
	public function setObUsuario(App_Model_Usuario $obUsuario) {
		$this->obUsuario = $obUsuario;
                return $this;
	}

	/**
	 * @param App_Model_ItemCompra the $arrItemCompra to set
	 */
	public function adicionarItemCompra(App_Model_ItemCompra $itemCompra) {
                $this->arrItemCompra[] = $itemCompra;
                return $this;
	}
	
	
	
	/**
    * calcular uma nota de compra
    * 
    * @param Fornecedor $objFornecedor
    * @param Usuario $objUsuario
    * @return Compra
    */
   public function fecharCompra(App_Model_Fornecedor $objFornecedor, App_Model_Usuario $objUsuario) {   	
   		
        if ( $objFornecedor->getCoFornecedor() < 1 ) {
            throw new Voitech_Exception('Favor informar o fornecedor.');
        }

        if ( $objUsuario->getCoPessoa() < 1 ) {
            throw new Voitech_Exception('Favor informar o usuário.');
        }

        if ( !isset( $this->obTipoCompra ) or $this->obTipoCompra->getCoTipoCompra() < 1 ) {
            throw new Voitech_Exception('Favor informar o tipo de compra.');
        }

        if ( empty( $this->nuNota ) ) {
            throw new Voitech_Exception('Favor informar a nota fiscal.');
        }

        $this->obFornecedor = $objFornecedor; 
        $this->obUsuario = $objUsuario;  	

        $vlCompra = 0;
       	foreach( $this->arrItemCompra as $obj )
       	{
       	    $vlCompra += $obj->calcularTotalItem();
       	}
       	$this->vlCompra = $vlCompra;
       	return $this;
   }		
}